package server;


import java.io.IOException;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.Scanner;

import common.ClientInterface;

public class AttendiUscita extends Thread implements Serializable{

	private Scanner sc;
	private String s;
	private String r;
	private Server server;
	
	public AttendiUscita(Server ser){
		sc = new Scanner(System.in);
		s=new String();
		r=new String();
		server=ser;
	}
	

	public void run(){
		System.out.println("Digita ''exit'' in qualunque momento per spegnere il server.");
		while(!server.isSpegniserver()){
			s= sc.next();
			if(s.equals("exit")){
				System.out.println("Sistema in chiusura.Salvataggio partita e uscita forzata dei giocatori dal gioco.");
				for(ClientInterface intfc:server.getClientinterface()){
					try {
						intfc.display("@Server si sta per spegnere.Tutti i dati verranno salvati e saranno disponibili alla riaccensione");
					} catch (RemoteException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					}
					try {
						if(server.getGiocatorionline().contains(server.getPDaToken(intfc.getToken()))){
							r=server.esciDallaPartita(intfc.getToken());
							System.out.println("Uscita di " + server.getPDaToken(intfc.getToken()).getNomeutente() +" dalla partita: " +r );					
						}
					} catch (RemoteException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
				}	
				server.setSpegniserver(true);
				server.salvaGame();
				server.getTurno().setFine(false);
				System.exit(0);
			}
			else{
				System.out.println("Comando errato.Digita ''exit'' in qualunque momento per spegnere il server.");
			}
				
		}
	}
}
